package bio.chat;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/**
 * @author charwayH
 * 目标: BIO模式下端口转发思想-服务端实现
 * 服务端实现的需求
 * 1. 注册端口
 * 2. 接收客户端的socket连接，交个一个独立的线程来处理
 * 3. 把当前连接的客户端socket存入到一个在线socket集合来存储
 * 4. 接收客户端消息，然后推送给当前所有socket接收
 */
public class Server {
    /**
     * 定义个静态集合
     */
    public static List<Socket> allSocketOnline = new ArrayList<Socket>();


    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);
            while (true){
                Socket socket = serverSocket.accept();
                // 把登录的客户端存入到一个在线集合中
                allSocketOnline.add(socket);
                // 为当前登录成功的socket分配一个独立的线程来处理与之通信
                new ServerReaderThread(socket).start();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
